/*

cimahis - Software para el analisis de imagenes de corte histologico

Copyright (C) Andrés De Abreu 2010 <jadabreu @ gmail . com>


Este programa es software libre. Puede redistribuirlo y/o modificarlo bajo los términos
de la Licencia Pública General de GNU según es publicada por la Free Software Foundation,
bien de la versión 2 de dicha Licencia o bien (según su elección) de cualquier versión
posterior.

Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA,
incluso sin la garantía MERCANTIL implícita o sin garantizar la CONVENIENCIA PARA UN
PROPÓSITO PARTICULAR. Véase la Licencia Pública General de GNU para más detalles.

Debería haber recibido una copia de la Licencia Pública General junto con este programa.
Si no ha sido así, escriba a la Free Software Foundation, Inc.,
en 675 Mass Ave, Cambridge, MA 02139, EEUU.

    //ACERCA DE fabricaObjetos.cpp
    *
    * Implementación de la clase fabricaObjetos, la cual se encarga de la creación de
    * histogramas y filtros

*/

#include "color/fabricaObjetos.h"
#include <iostream>

using namespace std;

fabricaObjetos::fabricaObjetos() //constructor de la clase, por ahora vacio
{
}

filtros * fabricaObjetos::crearFiltro(string tipo)
{
    filtros *f=0;  //apuntador que referenciara el filtro que se va a crear
    
    //////////////////////////////Bloque de seleccion de filtro/////////////////////////
    
    //* OJO cada vez que se cree un nuevo filtro se debe incluir aqui
    //* agregando un nuevo "else if"
    //* tambien se po  //apuntador que referenciara el filtro que se va a crear
    
    //////////////////////////////Bloque de seleccion de filtro/////////////////////////
    
    //* OJO cada vez que se cree un nuevo filtro se debe incluir aqui
    //* agregando un nuevo "else if"
    //* tambien se podria implemetar una tabla de busqueda o algun otro metodo mas avanzado para
    //* seleccionar el filtrodria implemetar una tabla de busqueda o algun otro metodo mas avanzado para
    //* seleccionar el filtro
    

    if(tipo=="Mediana")
    {
        f = new filtroMediana();
    }
    else if(tipo=="Bilateral")
    {
        f = new filtroBilateral();
    }
    else if(tipo=="Gauss")
    {
        f = new filtroGauss();
    }
    else if(tipo=="MeanShift")
    {
        f = new filtroMeanShift();
    }
    else
        f= new filtroMediana(); // si el nombre pasado en la variable tipo
								//no corresponde a los anteriores, se creara uno de mediana

   //////////////////////////////////////////////////////////////////////////////////

    return f;

}

histograma * fabricaObjetos::crearHistograma(string tipo)
{
    histograma *a=0;  //apuntador que referenciara a el histograma que se va a crear
    
    //////////////////////////////Bloque de seleccion de filtro/////////////////////////
    
    //* OJO cada vez que se cree un nuevo histograma se debe incluir aqui
    //* agregando un nuevo "else if"
    //* tambien se podria implemetar una tabla de busqueda o algun otro metodo mas avanzado para
    //* seleccionar el histograma

    if((tipo=="RGB")||(tipo=="Rgb")||(tipo=="rgb"))
    {
        a = new histogramaEstandar();
    }
    else if((tipo=="Tinte")||(tipo=="tinte")||(tipo=="TINTE")||(tipo=="hsv")||(tipo=="HSV")||(tipo=="Hsv")||(tipo=="Hsl")||(tipo=="HSL")||(tipo=="hsl"))
    {
        a = new histogramaTinte();
    }

    return a;
}
